Distributed processing frameworks (e.g. CORBA, DCOM, .NET, EJB, JINI, Javaspaces, Web Services, etc.) attempt to coordinate functional execution of applications across an environment of connected computing devices. However, as distributed processing frameworks mature, the frameworks become increasingly prohibitive for use by an application developer or administrator due to complexity of the coding of the application itself, or of the framework to which the application delegates tasks. For example, application servers typically take minutes to start, load tens or hundreds of thousands of classes, and consume hundreds of megabytes of memory before performing a single application transaction.
Distributed processing frameworks typically consume resources constantly (e.g., whether or not the frameworks are performing any useful work), and tend to be either technology-specific to the application and supporting services (e.g. .NET or any of the Java variants) or technology-agnostic but requiring multiple technology-specific implementations (e.g. CORBA, X-Window). The technology-specific nature of distributed processing framework implementations can be a constraint to the adaptability of a framework to existing applications, or a barrier to integration with new application programming languages and emerging tools.